
package taskmanager;

/**
 * Интерфейс планировщика нижнего уровня
 * позволяет управлять планировщиком
 * @author Aleksey ID=2001
 */
public interface ILocalTaskManager extends ISlaveTaskManager {

    /**
     * Установить максимальное количество активных задач
     * @param max максимально количество активных задач
     */
    public void setMaxActiveCount(int max);

    /**
     * Добавить задачу в планировщик
     * @param task задача, не null !
     * @return true - задача добавлена, false - задача с указанным id уже есть
     */
    public boolean addTask(JTask task);

    /**
     * Удалить задачу из планировщика
     * Процессы связанные с задачей уничтожаются
     * @param taskID идентификатор задачи
     * @return true - задача удалена, false - задачи нет
     */
    public boolean removeTask(long taskID);

    /**
     * Остановить выполнение задачи
     * @param taskID идентификатор задачи
     * @return true - задача остановлена, false - задачи нет
     */
    public boolean stopTask(long taskID);

    /**
     * Отправить следующую задачу на выполнение
     * @return true - успешное выполнение, false - превышен порог активных задач
     * или очередная задача заблокирована
     */
    public boolean activateNextTask();

}
